package InterfaceGraphique;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Classe codant l'ajout de page à notre graphe
 * @author bruno
 *
 */
public class FenetreAjoutPage extends Fenetre {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * bouton qu'il faudra cliquer pour ajouter la page
	 * @see JButton
	 */
	private JButton button1 = new JButton("Ajouter la page");
	
	/**
	 * bouton qu'il faudra cliquer pour annuler et revenir au menu
	 * @see JButton
	 */
	private JButton button2 = new JButton("Annuler");
	
	/**
	 * zone de saisie du nom de la page
	 * @see JTextField
	 */
	private JTextField name = new JTextField();
	
	/**
	 * constructeur de la fenetre
	 */
	public FenetreAjoutPage(){
		Test.disable();
		
		this.setTitle("Ajouter une page");
		this.setSize(425, 200);
		this.setResizable(true);
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		
		button1.addActionListener(this);
		button2.addActionListener(this);
		
		JPanel main_container = new JPanel();
		main_container.setLayout(new GridBagLayout());
		
		GridBagConstraints gbc = new GridBagConstraints();
		
		//on précise le placement du premier composant sur le container
		gbc.gridx = 0;
		gbc.gridy = 0;
		//on précise la taille des composants par rapport à la grille 
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.ipady = 10;
		gbc.anchor = GridBagConstraints.WEST;
		
		JLabel label_for_name = new JLabel("Saisir le nom de la page à ajouter :");
		name.setPreferredSize(new Dimension(100, 25));
		main_container.add(label_for_name, gbc);
		gbc.gridx = 1;
		main_container.add(name, gbc);

		gbc.gridx = 0;
		gbc.gridy = 1;
		
		main_container.add(button1, gbc);
		gbc.gridx = 1;
		main_container.add(button2, gbc);
		
		this.setContentPane(main_container);
	}
	
	
	/**
	 * Méthode qui définit ce que le programme fera en fonction des boutons cliqués
	 * @param e l'action dont on peut récupérer la source vie e.getSource()
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == button1){
			boolean isGoodToSend = true;
			
			String field_one = (String) name.getText();
			
			// on vérifie que le nom est pas vide
			if(field_one.equals("")) isGoodToSend = false;
			
			if(isGoodToSend){
				Test.g.addPage(field_one);
				Test.f.load.setText("Page ajouté !!!");
			}
			else Test.f.load.setText("Erreur lors de l'ajout de la page !!!");
			
			Test.reEnable();
			this.dispose();
		}
		if(e.getSource() == button2){
			Test.reEnable();
			this.dispose();
		}
	}

}
